package com.peas.platform.module.icims.expenditure.kpis.controller.vo;

import java.util.*;
import java.math.*;
import com.peas.platform.common.core.annotation.Comment;
import com.peas.platform.common.core.vo.BaseVo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;

import javax.validation.constraints.*;

@Data
@EqualsAndHashCode(callSuper = false)
@ApiModel("指标单")
public class ExpenditureKpiVo extends BaseVo {

    // 自动生成
    @Comment(value = "指标编码")
    @ApiModelProperty(value = "指标编码")
    @Size(max = 100, message = "指标编码不能超过100个字符")
    private String kpiCode;

    @Comment(value = "指标名称")
    @ApiModelProperty(value = "指标名称")
    @Size(max = 200, message = "指标名称不能超过200个字符")
    private String kpiName;

    @Comment(value = "单据日期")
    @ApiModelProperty(value = "单据日期")
    private Date kpiDate;

    @Comment(value = "预算年度")
    @ApiModelProperty(value = "预算年度")
    @Size(max = 4, message = "预算年度不能超过4个字符")
    private String year;

    @Comment(value = "支出类型", dictType = "ExpenditureKpiPayType")
    @ApiModelProperty(value = "支出类型", notes = "字典取值:ExpenditureKpiPayType")
    @Size(max = 20, message = "支出类型不能超过20个字符")
    private String payType;

    @Comment(value = "经费类型", dictType = "ExpenditureKpiFundType")
    @ApiModelProperty(value = "经费类型", notes = "字典取值:ExpenditureKpiFundType")
    @Size(max = 20, message = "经费类型不能超过20个字符")
    private String fundType;

    @Comment(value = "预算总金额")
    @ApiModelProperty(value = "预算总金额")
    private BigDecimal amount;

    // （组织架构表）外键
    @Comment(value = "组织架构(部门)ID")
    @ApiModelProperty(value = "组织架构(部门)ID")
    private Long organizationId;

    // （用户表）外键
    @Comment(value = "项目负责人用户ID")
    @ApiModelProperty(value = "项目负责人用户ID")
    private Long managerId;

    // （项目类型表）多级外键
    @Comment(value = "项目类型ID")
    @ApiModelProperty(value = "项目类型ID")
    @Size(max = 200, message = "项目类型ID不能超过200个字符")
    private String expenditurePtypeId;

    // （功能分类表）多级外键
    @Comment(value = "功能分类ID")
    @ApiModelProperty(value = "功能分类ID")
    @Size(max = 200, message = "功能分类ID不能超过200个字符")
    private String expenditureFunctionalId;

    // （财政项目表）多级外键
    @Comment(value = "财政项目ID")
    @ApiModelProperty(value = "财政项目ID")
    @Size(max = 200, message = "财政项目ID不能超过200个字符")
    private String expenditureFiscalId;

    @Comment(value = "指标来源", dictType = "ExpenditureKpiSource")
    @ApiModelProperty(value = "指标来源", notes = "字典取值:ExpenditureKpiSource")
    @Size(max = 20, message = "指标来源不能超过20个字符")
    private String source;

    @Comment(value = "状态", enumType = "ExpenditureKpiState")
    @ApiModelProperty(value = "状态", notes = "枚举取值:ExpenditureKpiState")
    @Size(max = 20, message = "状态不能超过20个字符")
    private String state;

    @Comment(value = "是否按经济分类控制金额", enumType = "CommonYesNo")
    @ApiModelProperty(value = "是否按经济分类控制金额", notes = "枚举取值:CommonYesNo")
    @Size(max = 20, message = "是否按经济分类控制金额不能超过20个字符")
    private String isEconomic;

    @Comment(value = "是否开启业务", enumType = "CommonYesNo")
    @ApiModelProperty(value = "是否开启业务", notes = "枚举取值:CommonYesNo")
    @Size(max = 20, message = "是否开启业务不能超过20个字符")
    private String isBegin;

}
